package articleStudy.stream;

import java.util.*;

/**
 * 题目的初始实现，采用for循环
 */
public class Stream {
    public static void main(String[] args) {
        //原始list
        List<String> list = Arrays.asList("1", "2", "bilibili", "of", "codesheep", "5", "at", "BILIBILI", "codesheep", "23", "CHEERS", "6");
//        System.out.println(list);

        //1、先定义一个具备字母排序功能的set容器，set本身可以去重
        Set<String> stringSet = new TreeSet<>(
                new Comparator<String>() {
                    @Override
                    public int compare(String s, String t1) {
                        return s.compareTo(t1); //按字母顺序排列
                    }
                }
        );

        //2、以下for循环完成元素去重，大小写转换，长度判断等操作。
        for (int i = 0; i < list.size(); i++) {
            String s = list.get(i);
            if (!isNum(s) && s.length() >= 5) {
                String sLower = s.toLowerCase(); //统一转小写
                stringSet.add(sLower);
            }
        }

        //3、以下for循环完成连词成句
        StringBuffer result = new StringBuffer();
        for (String s : stringSet
        ) {
            result.append(s);
            result.append("❤"); //用爱心连接符链接
        }
        String finalResult = result.substring(0, result.length() - 1).toString();  //去掉最后一个多余连接符

        System.out.println(finalResult);
    }

    /**
     * 判断输入字符串是否是数字。
     * 如果全程
     *
     * @param str
     * @return
     */
    public static Boolean isNum(String str) {
        for (int i = 0; i < str.length(); i++) {
            if (!Character.isDigit(str.charAt(i))) {
                return false;
            }
        }
        return true;
    }
}
